/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fox.iebav.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author waldenilson
 */
@Entity
@Table(name = "empresas")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Empresas.findAll", query = "SELECT e FROM Empresas e")})
public class Empresas implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @SequenceGenerator(name="seqempresas",sequenceName="empresas_id_seq",allocationSize=1)
    @GeneratedValue(generator="seqempresas",strategy=GenerationType.SEQUENCE)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "razao_social")
    private String razaoSocial;
    @Column(name = "nome_fantasia")
    private String nomeFantasia;
    @Column(name = "logradouro")
    private String logradouro;
    @Column(name = "numero")
    private String numero;
    @Column(name = "complemento")
    private String complemento;
    @Column(name = "bairro")
    private String bairro;
    @Column(name = "cep")
    private String cep;
    @Column(name = "fone")
    private String fone;
    @Column(name = "fax")
    private String fax;
    @Column(name = "cnpj")
    private String cnpj;
    @Column(name = "inscricao_estadual")
    private String inscricaoEstadual;
    @Column(name = "inscricao_municipal")
    private String inscricaoMunicipal;
    @Column(name = "contato")
    private String contato;
    @Column(name = "fone_contato")
    private String foneContato;
    @Column(name = "email")
    private String email;
    @Column(name = "website")
    private String website;
    @Column(name = "desde")
    @Temporal(TemporalType.DATE)
    private Date desde;
    @Column(name = "cpf_responsavel")
    private String cpfResponsavel;
    @Column(name = "nome_responsavel")
    private String nomeResponsavel;
    @Column(name = "senha_responsavel")
    private String senhaResponsavel;
    @Column(name = "cargo_responsavel")
    private String cargoResponsavel;
    @Column(name = "email_responsavel")
    private String emailResponsavel;
    @Column(name = "obs")
    private String obs;
    @Column(name = "auditoria")
    private String auditoria;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "empresa")
    private List<Lances> lancesList;
//    @OneToMany(cascade = CascadeType.ALL, mappedBy = "empresa")
//    private List<Responsavelempresa> responsavelempresaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "empresa")
    private List<Propostasitens> propostasitensList;
    @JoinColumn(name = "tipo_logradouro", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Tiposlogradouro tipoLogradouro;
    @JoinColumn(name = "responsavel", referencedColumnName = "id")
    @ManyToOne(optional = false,cascade=CascadeType.ALL)
    private Responsavelempresa responsavel;
    @JoinColumn(name = "ramo", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Ramosatividade ramo;
    @JoinColumn(name = "cidade", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Cidades cidade;

    public Empresas() {
    }

    public Empresas(Integer id) {
        this.id = id;
    }

    public Empresas(Integer id, String razaoSocial) {
        this.id = id;
        this.razaoSocial = razaoSocial;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getRazaoSocial() {
        return razaoSocial;
    }

    public void setRazaoSocial(String razaoSocial) {
        this.razaoSocial = razaoSocial;
    }

    public String getNomeFantasia() {
        return nomeFantasia;
    }

    public void setNomeFantasia(String nomeFantasia) {
        this.nomeFantasia = nomeFantasia;
    }

    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getFone() {
        return fone;
    }

    public void setFone(String fone) {
        this.fone = fone;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getInscricaoEstadual() {
        return inscricaoEstadual;
    }

    public void setInscricaoEstadual(String inscricaoEstadual) {
        this.inscricaoEstadual = inscricaoEstadual;
    }

    public String getInscricaoMunicipal() {
        return inscricaoMunicipal;
    }

    public void setInscricaoMunicipal(String inscricaoMunicipal) {
        this.inscricaoMunicipal = inscricaoMunicipal;
    }

    public String getContato() {
        return contato;
    }

    public void setContato(String contato) {
        this.contato = contato;
    }

    public String getFoneContato() {
        return foneContato;
    }

    public void setFoneContato(String foneContato) {
        this.foneContato = foneContato;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }

    public Date getDesde() {
        return desde;
    }

    public void setDesde(Date desde) {
        this.desde = desde;
    }

    public String getCpfResponsavel() {
        return cpfResponsavel;
    }

    public void setCpfResponsavel(String cpfResponsavel) {
        this.cpfResponsavel = cpfResponsavel;
    }

    public String getNomeResponsavel() {
        return nomeResponsavel;
    }

    public void setNomeResponsavel(String nomeResponsavel) {
        this.nomeResponsavel = nomeResponsavel;
    }

    public String getSenhaResponsavel() {
        return senhaResponsavel;
    }

    public void setSenhaResponsavel(String senhaResponsavel) {
        this.senhaResponsavel = senhaResponsavel;
    }

    public String getCargoResponsavel() {
        return cargoResponsavel;
    }

    public void setCargoResponsavel(String cargoResponsavel) {
        this.cargoResponsavel = cargoResponsavel;
    }

    public String getEmailResponsavel() {
        return emailResponsavel;
    }

    public void setEmailResponsavel(String emailResponsavel) {
        this.emailResponsavel = emailResponsavel;
    }

    public String getObs() {
        return obs;
    }

    public void setObs(String obs) {
        this.obs = obs;
    }

    public String getAuditoria() {
        return auditoria;
    }

    public void setAuditoria(String auditoria) {
        this.auditoria = auditoria;
    }

    @XmlTransient
    public List<Lances> getLancesList() {
        return lancesList;
    }

    public void setLancesList(List<Lances> lancesList) {
        this.lancesList = lancesList;
    }

//    public List<Responsavelempresa> getResponsavelempresaList() {
//		return responsavelempresaList;
//	}
//
//	public void setResponsavelempresaList(
//			List<Responsavelempresa> responsavelempresaList) {
//		this.responsavelempresaList = responsavelempresaList;
//	}

	@XmlTransient
    public List<Propostasitens> getPropostasitensList() {
        return propostasitensList;
    }

    public void setPropostasitensList(List<Propostasitens> propostasitensList) {
        this.propostasitensList = propostasitensList;
    }

    public Tiposlogradouro getTipoLogradouro() {
        return tipoLogradouro;
    }

    public void setTipoLogradouro(Tiposlogradouro tipoLogradouro) {
        this.tipoLogradouro = tipoLogradouro;
    }

    public Responsavelempresa getResponsavel() {
        return responsavel;
    }

    public void setResponsavel(Responsavelempresa responsavel) {
        this.responsavel = responsavel;
    }

    public Ramosatividade getRamo() {
        return ramo;
    }

    public void setRamo(Ramosatividade ramo) {
        this.ramo = ramo;
    }

    public Cidades getCidade() {
        return cidade;
    }

    public void setCidade(Cidades cidade) {
        this.cidade = cidade;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Empresas)) {
            return false;
        }
        Empresas other = (Empresas) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.fox.iebav.entity.Empresas[ id=" + id + " ]";
    }
    
}
